# 列表使用
def list_info():
    # 列表定义 字面量定义
    list1 = []
    print(list1, type(list1))
    # 使用构造方法定义
    list2 = ['abc', '123', 123]
    print(list2, type(list2))
    # 下标访问列表元素,下标访问
    list3 = ['a', 'b', 'c', 'f', 1, 3, 4, 6, (4, 5), [7, 8, 9, 'd']]
    print(list3[1], type(list3))
    print(list3[8], type(list3[8]))
    print(list3[9])
    print(list3[8][1])
    print(list3[9][3])
    # 列表修改
    list4 = ['a', 'b', 'c', 'f', 1, 3, 4, 6, (4, 5), [7, 8, 9, 'd']]
    list4[0] = 92
    print(list4)
    # 列表切片
    print(list3[::-1])
    print(list3[1:5:1])


# list_info()

def list_op():
    # count(value) 统计value在列表中出现的次数
    li1 = ['a', 'b', 'c', 'a', 'a', 4, 2, 3, 3]
    print(li1.count('a'))
    # index(value, start, stop)在列表中查找value值第一次出现的位置，如果给定范围，只在范围中查找
    print(li1.index(4, 2, 6))
    print(li1.index(3))
    # 给定值不在范围内
    # print(li1.index(5, 2, 6))
    # append(value) 向列表最后追加元素
    li2 = []
    li2.append('b')
    print(li2)
    li2.append('c')
    print(li2)
    li2.append('d')
    print(li2)
    li2.append((1, 2))
    print(li2)
    li2.append([4, 6])
    print(li2)
    # 列表扩展 将一个可迭代的对象的元素依次添加到列表最后
    li3 = [1, 2, 3]

    li3.extend((4,))
    print(li3)
    li3.extend((4, 5, 6))
    print(li3)
    li3.extend(['a', 'b', 'c'])
    print(li3)
    # insert(index, value) 向列表指定下标位置插入一个元素，原有元素依次后移，如果指定下标超过元素个数，则插入到列表最后。
    li4 = [1, 2, 3, "a", "b"]
    li4.insert(0, (1, 5))
    print(li4)
    # del 可以使用 del 关键字结合索引来删除指定位置的元素。如果指定的下标不存在则抛出一个错误。
    # remove(value) 在列表中删除第一个指定的数据，如果删除的数据不存在则抛出错误
    # pop(index) 从列表中取出并删除指定下标位置的元素，默认取出并删除最后一个元素，如果指定下标不存在，则会抛出一个错误
    # clear() 清空列表
    # sort(key, reverse) 对列表进行排序
if __name__ == '__main__':
    list_op()
